/* scheme.h
 * A header file that defines the basic Scheme data types, etc. Used
 * with the scheme->c compiler.
 * Programmer: Mayer Goldberg, 2000
 */

#ifndef __SCHEME_H
#define __SCHEME_H

#include <base.h>
#include <debug.h>
#include "schemebase.h"
#include "schemeobject.h"
#include "machine.h"
#include "toplevel.h"
#include "env.h"

/*** SCHEME SINGLETONS ***/

extern SchemeObject* schemeTrue ;
extern SchemeObject* schemeFalse ;
extern SchemeObject* schemeNil ;
extern SchemeObject* schemeVoid ;

/*** HELPERS ***/

/* returns a scheme list (pair of pair of pair etc..) by copying from the stack top. */
SchemeObject* stackToSchemeList(LocalEnv stackTop, Amount elementCount) ;

Amount SchemeListLength(SchemeObject* head) ;

#endif /* __SCHEME_H */
